#[test]
fn test1() {
    let v: Vec<i8> = vec![10, 20, 30];
    let mut iter = v.iter();

    println!("v[0]: {:?}", iter.next());
    println!("v[1]: {:?}", iter.next());
    println!("v[2]: {:?}", iter.next());
    println!("No more items: {:?}", iter.next());
}

#[test]
fn test2() {
    let v: Vec<i8> = vec![10, 20, 30];
    let mut iter = v.iter();

    let v0: Option<&i8> = iter.next();
    println!("v0: {v0:?}");
}

#[test]
fn test3() {
    let v: Vec<i8> = vec![10, 20, 30];
    let mut iter = v.into_iter();

    let v0: Option<i8> = iter.next();
    println!("v0: {v0:?}");
}

#[test]
fn test4() {
    let v: Vec<i8> = vec![10, 20, 30];

    for num in &v {
        println!("num: {num}");
    }

    for num in v {
        println!("num: {num}");
    }
}